package com.example.demolistview;

import java.util.ArrayList;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class DetailMessageActivity extends Activity {

	/** Tag string for our debug logs */
	// private static final String TAG = "SmsMessagingDemo";
	public static final String SMS_RECIPIENT_EXTRA = "inet.android.b12.SMS_RECIPIENT";
	public static final String ACTION_SMS_SENT = "inet.android.b12.SMS_SENT_ACTION";

	String[] mContentList;
	EditText mTxt;

	EditText mNguoiNhan;
	EditText mNoiDungTinNhan;
	TextView mTrangThaiTinNhan;

	BroadcastReceiver respondBroadcast;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		Log.e("EnterOncreate", "");
		setContentView(R.layout.activity_detail_message);
		respondBroadcast = new BroadcastReceiver() {

			@Override
			public void onReceive(Context context, Intent intent) {
				try {

					String message = null;
					boolean error = true;

					switch (getResultCode()) {
					case Activity.RESULT_OK:
						message = "Tin nhắn đã được gửi!";
						error = false;
						break;
					case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
						message = "Lỗi gửi tin nhắn.";
						break;
					case SmsManager.RESULT_ERROR_NO_SERVICE:
						message = "Lỗi: Không tìm thấy nhà cung cấp dịch vụ.";
						break;
					case SmsManager.RESULT_ERROR_NULL_PDU:
						message = "Lỗi: Null PDU.";
						break;
					case SmsManager.RESULT_ERROR_RADIO_OFF:
						message = "Lỗi: Mất sóng di động.";
						break;
					}

					// Cho phép người dùng tiếp tục nhập thông tin
					mNguoiNhan.setEnabled(true);
					mNoiDungTinNhan.setEnabled(true);
					// Gán nội dung về rỗng
					mNoiDungTinNhan.setText("");

					mTrangThaiTinNhan.setText(message);
					mTrangThaiTinNhan.setTextColor(error ? Color.RED
							: Color.GREEN);
				} catch (Exception e) {
					Log.e("Exception in Receiver Class", e.toString());
				}

			}
		};

		try {

			Log.e("LoadMessageList", "");
			mContentList = getResources().getStringArray(
					R.array.list_message_contents);
			int position = getIntent().getIntExtra("position", 1);
			mTxt = (EditText) findViewById(R.id.txtMessage);
			mTxt.setText(mContentList[position]);
		} catch (Exception e) {
			Log.e("Loi", e.toString());
		}

		try {
			// Khi có tin nhắn đến, nếu người dùng chọn trả lời thì sẽ bật ứng
			// dụng
			// này lên và điền số điện thoại vừa nhắn tin tới..
			// if (getIntent().hasExtra(SMS_RECIPIENT_EXTRA)) {
			// ((TextView) findViewById(R.id.txtDestination))
			// .setText(getIntent().getExtras().getString(
			// SMS_RECIPIENT_EXTRA));
			// ((TextView) findViewById(R.id.txtMessage)).requestFocus();
			// }

			Log.e("LoadMessageInfor", "");
			mNguoiNhan = (EditText) DetailMessageActivity.this
					.findViewById(R.id.txtDestination);
			mNoiDungTinNhan = (EditText) DetailMessageActivity.this
					.findViewById(R.id.txtMessage);
			mTrangThaiTinNhan = (TextView) DetailMessageActivity.this
					.findViewById(R.id.tvRespond);

		} catch (Exception e) {
			Log.e("Loi", e.toString());
		}

	}

	// Save message to send later.
	public void saveMessage(View v) {

	}

	// setup for event OnclickListeningSendButton
	public void sentMessage(View v) {
		if (TextUtils.isEmpty(mNguoiNhan.getText())) {
			Toast.makeText(DetailMessageActivity.this,
					"Vui lòng nhập số điện thoại gửi.", Toast.LENGTH_SHORT)
					.show();
			return;
		}
		try {

			if (TextUtils.isEmpty(mNoiDungTinNhan.getText())) {
				Toast.makeText(DetailMessageActivity.this,
						"Vui lòng nhập nội dung tin nhắn.", Toast.LENGTH_SHORT)
						.show();
				return;
			}

			// Khóa nội dung nhập lại ko cho người dùng thao tác để tránh
			// lỗi
			mNguoiNhan.setEnabled(false);
			mNoiDungTinNhan.setEnabled(false);

			SmsManager sms = SmsManager.getDefault();

			/*
			 * Chia nội dung tin nhắn ra nếu vượt quá số ký tự cho phép (mặc
			 * định là 160 ở Việt Nam). Điều này có thể khác ở một số định dạng
			 * SMS ở nhà mạng thuộc quốc gia khác ví dụ như Hàn Quốc (một tin
			 * SMS chỉ có 80 ký tự). Theo một số tài liệu thì mặc định bản
			 * Android quốc tế qui định 1 SMS tối đa là 145 ký tự
			 */
			ArrayList<String> messages = sms.divideMessage(mNoiDungTinNhan
					.getText().toString());

			String recipient = mNguoiNhan.getText().toString();

			// Cách gửi 1: dùng vòng lặp để gửi nhiều đoạn tin nhắn
			for (String message : messages) {
				sms.sendTextMessage(recipient, null, message, PendingIntent
						.getBroadcast(DetailMessageActivity.this, 0,
								new Intent(ACTION_SMS_SENT), 0), null);
			}
		} catch (Exception e) {
			Log.e("Loi gui", "");
		}

		// Cách gửi 2:
		// sms.sendMultipartTextMessage(recipient, null, messages, null,
		// null);

	}

	@Override
	protected void onDestroy() {

		unregisterReceiver(respondBroadcast);
		super.onDestroy();
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		registerReceiver(respondBroadcast, new IntentFilter(ACTION_SMS_SENT));
		super.onResume();
	}

}
